package com.shp.dao;

import com.shp.pojo.SystemMsg;
import com.shp.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author ZWL
 * @version  1.0
 * @date  2020/2/23 12:39
 */
public interface UserDao {

    /**
     * 查询所有用户
     * @return users
     */
    public List<User> getAllUsers();

    /**
     * 查看用户是否存在
     * @param email 用户的邮箱
     * @return user
     */
    public User isExist(@Param("email") String email);

    /**
     * 插入在User表中插入用户数据
     * @param user 用户信息
     * @return 影响行数
     */
    public int insert(@Param("user") User user);

    /**
     * 登录验证
     * @param email 用户邮箱
     * @param password 用户登录密码
     * @return 用户信息对象user
     */
    User findUserByEmailAndPassword(@Param("email") String email, @Param("password") String password);

    /**
     * 根据用户的id，获取User
     * @param id 用户id
     * @return User
     */
    public User getUserById(@Param("id") Integer id);

    /**
     * 根据邮箱，修改用户的登录密码
     * @param email 用户的邮箱
     * @param newPassword  新密码
     * @return 影响行数
     */
    public int updatePasswordByEmail(@Param("email")String email,@Param("password") String newPassword);

    /**
     * 修改个人信息
     *
     * @param user User
     * @return 影响行数
     *
     */
    public int update(@Param("user") User user);

    /**
     * 查询系统信息
     * @return  List<SystemMsg>
     */
    public List<SystemMsg> getSystemMsgByDate();

    /**
     * 根据条件，查询所有符合的User
     * @param user 条件如下：<br/>
     *          user.phone - 手机 <br/>
     *          user.userName - 昵称 <br/>
     *          user.email - 邮箱 <br/>
     *          user.status - 状态 <br/>
     *          user.registerFlag - 注册期限 <br/>
     * @return 查询成功返回List<User>集合；否则返回null
     */
    public List<User> getUserBySelect(@Param("user") User user);


    /**
     * 批量删除用户
     *
     * @param userIds 用户id
     * @return 影响行数
     */
    public int deleteUser(@Param("ids") Integer[] userIds);
}
